#ifndef __LINK_H
#define __LINK_H

/*
	Формат пакета протокола LINK
	Длина| Код команды | Данные |
	2 б		1 б				N б
*/

//Номера байтов внутри пакета LINK
#define LINK_LENGTH 			0  	//длина 
#define LINK_TYPE					2	//код команды
#define LINK_DATA					3	//данные

#define LINK_HEADER_SIZE	3	//размер заголовка пакета ConfiBoot


//Коды команд протокола LINK
#define CMD_GET_INFO								0x01
#define CMD_WRITE_FILE_BLOCK  			0x02
#define CMD_WRITE_FILE_INFO					0x03
#define CMD_JUMP_TO_APPLICATION  		0x04
#define CMD_JUMP_TO_BOOTLOADER  		0x05

#define ANS_INFO										0x81


#define ANS_OK											0x80
#define ANS_ERROR										0xFF


/*
	Коды ошибок
*/
#define ERROR_LENGTH_FIELD 					0x51
#define ERROR_NOT_SUPPORTED					0x52
#define ERROR_PARAMETER							0x53
#define ERROR_FILE_SIZE							0x54
#define ERROR_BLOCK_NUMBER					0x55


#define FILE_BLOCK_SIZE							1024
#define MAX_FILE_SIZE								416*1024 

/*
	Прототипы функций
*/
void link_parse_packet(U8 * packet, U16 packet_size, U8 socket);
void cmd_get_info(U8 * packet, U16 length, U8 socket);
void cmd_jumpto_bootloader(U8 * packet, U16 length, U8 socket);
void ans_ok(U8 type,U8 sock);
void ans_error(U8 type, U8 error,U8 sock);
void link_send_packet(U8 type, U8 * data, U16 data_length,U8 sock);
#endif 